using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("UIBObjectSpacing")]
	public class UIBObjectSpacing : MonoBehaviour
	{
		[Attribute38("UIBObjectSpacing.SpacedObject")]
		public class SpacedObject : MonoClass
		{
			public GameObject m_Object => method_3<GameObject>("m_Object");

			public Vector3 m_Offset => method_2<Vector3>("m_Offset");

			public bool m_CountIfNull => method_2<bool>("m_CountIfNull");

			public SpacedObject(IntPtr address, string className)
				: base(address, className)
			{
			}

			public SpacedObject(IntPtr address)
				: this(address, "SpacedObject")
			{
			}
		}

		[Attribute38("UIBObjectSpacing.AnimationPosition")]
		public class AnimationPosition : MonoClass
		{
			public Vector3 m_targetPos => method_2<Vector3>("m_targetPos");

			public GameObject m_object => method_3<GameObject>("m_object");

			public AnimationPosition(IntPtr address, string className)
				: base(address, className)
			{
			}

			public AnimationPosition(IntPtr address)
				: this(address, "AnimationPosition")
			{
			}
		}

		public List<SpacedObject> m_Objects => method_3<Class271<SpacedObject>>("m_Objects")?.method_25();

		public Vector3 m_LocalOffset => method_2<Vector3>("m_LocalOffset");

		public Vector3 m_LocalSpacing => method_2<Vector3>("m_LocalSpacing");

		public Vector3 m_Alignment => method_2<Vector3>("m_Alignment");

		public bool m_reverse => method_2<bool>("m_reverse");

		public Vector3 LocalOffset => method_11<Vector3>("get_LocalOffset", Array.Empty<object>());

		public Vector3 LocalSpacing => method_11<Vector3>("get_LocalSpacing", Array.Empty<object>());

		public Vector3 Alignment => method_11<Vector3>("get_Alignment", Array.Empty<object>());

		public UIBObjectSpacing(IntPtr address, string className)
			: base(address, className)
		{
		}

		public UIBObjectSpacing(IntPtr address)
			: this(address, "UIBObjectSpacing")
		{
		}

		public void AddSpace(int index)
		{
			method_9("AddSpace", new Class276.Enum20[1] { Class276.Enum20.I4 }, index);
		}

		public void AddSpace(int index, Vector3 offset)
		{
			method_9("AddSpace", new Class276.Enum20[2]
			{
				Class276.Enum20.I4,
				Class276.Enum20.ValueType
			}, index, offset);
		}

		public void AddObject(GameObject obj, bool countIfNull)
		{
			method_9("AddObject", new Class276.Enum20[2]
			{
				Class276.Enum20.Class,
				Class276.Enum20.Boolean
			}, obj, countIfNull);
		}

		public void AddObject(Component comp, bool countIfNull)
		{
			method_9("AddObject", new Class276.Enum20[2]
			{
				Class276.Enum20.Class,
				Class276.Enum20.Boolean
			}, comp, countIfNull);
		}

		public void AddObject(Component comp, Vector3 offset, bool countIfNull)
		{
			method_9("AddObject", new Class276.Enum20[3]
			{
				Class276.Enum20.Class,
				Class276.Enum20.ValueType,
				Class276.Enum20.Boolean
			}, comp, offset, countIfNull);
		}

		public void AddObject(GameObject obj, Vector3 offset, bool countIfNull)
		{
			method_9("AddObject", new Class276.Enum20[3]
			{
				Class276.Enum20.Class,
				Class276.Enum20.ValueType,
				Class276.Enum20.Boolean
			}, obj, offset, countIfNull);
		}

		public void ClearObjects()
		{
			method_8("ClearObjects");
		}

		public void AnimateUpdatePositions(float animTime, iTween.EaseType tweenType)
		{
			method_8("AnimateUpdatePositions", animTime, tweenType);
		}

		public void UpdatePositions()
		{
			method_8("UpdatePositions");
		}
	}
}
